package fourmiefight.metier;

import java.util.ArrayList;

public class Carte 
{
	private ArrayList<Fourmiliere> listeFourmiliere;
	private ArrayList<Food> listeFood;
	
	private static final int NB_MAX_FOURMIS = 2000;
	
	 public Carte() 
	 {
		 listeFourmiliere = new ArrayList<>();
		 listeFood = new ArrayList<>();
	 }
	
	public ArrayList<Fourmiliere> getListeFourmiliere() 
	{
		return listeFourmiliere;
	}
	
	public ArrayList<Food> getListeFood() 
	{
		return listeFood;
	}

	/**
	 * Fonction permettant d'ajouter une fourmiliere au simulateur
	 * @param f
	 */
	public void ajouterFourmiliere(int nbFourmis) 
	{
		if (nbFourmis < NB_MAX_FOURMIS && nbFourmis > 0) 
		{
			Fourmiliere fourmiliere = new Fourmiliere(nbFourmis);
			listeFourmiliere.add(fourmiliere);
		}
	}
	
	public void ajouterFood(int nbFood)
	{
		Food food = new Food(nbFood);
		listeFood.add(food);
	}
	
	/**
	 * Fonction permettant d'enlever une fourmiliere au simulateur
	 * @param f
	 */
	public void retirerFourmiliere(Fourmiliere f) {
		listeFourmiliere.remove(f);
	}
 
	/**
	 * Fonction qui retourne le nombre de fourmilliere dans le simulateur
	 * @return 
	 */
	public int nbFourmis() {
	    int nbFourmis = 0;
	    for (Fourmiliere fourmiliere : listeFourmiliere) {
	      nbFourmis += fourmiliere.getNbFourmis();
	    }
	    return nbFourmis;
	}
	
	
	/**
	 * Fonction qui retourne le nombre de fourmilliere dans le simulateur
	 * @return 
	 */
	public int nbFourmiliere() {
		return listeFourmiliere.size();
	}
	
	/**
	 * 
	 * @param id
	 * @return Fourmiliere
	 */
	synchronized public Fourmiliere getFourmilliereWithId(int id) 
	{
		for (Fourmiliere f : this.listeFourmiliere) 
		{
			if (f.getIdd() == id)
			{
				return f;
			}
		}
		return null;
	}
	
	public void notifATic() 
	{
		for(Fourmiliere f : listeFourmiliere)
		{
			f.notifyATic();
		}
	}
	
	public void resetCarte() {
		this.listeFourmiliere = null;
		this.listeFood = null;
	}
}
